package com.ali.gts.domain;

import com.ali.gts.domain.AirPlane;
import org.springframework.beans.factory.FactoryBean;

/**
 *
 *   实现了FactoryBean 接口的类都是Spring 认识的工厂类
 *   spring 会自动的调用工厂方法创建实例
 *   这个工厂有了那么Spring 怎么知道调用这个工厂创建AirPlane呢 需要如下的两步
 *
 *   1、编写一个FactoryBean的实现类
 *   2、在spring的配置文件中进行注册
 *
 *
 *
 */
public class MyFactoryBean implements FactoryBean<AirPlane> {

    /**
     *
     * 这个是工厂方法，spring自动调用，返回需要的对象
     * @return
     * @throws Exception
     */
    @Override
    public AirPlane getObject() throws Exception {
        System.out.println("MyFactoryBean 正在帮我们创建对象");
        AirPlane airPlane = new AirPlane();
        airPlane.setCd(1000);
        airPlane.setCkn(200);
        return airPlane;
    }

    /**
     * 返回创建的对象类型
     * 这个是工厂方法，spring自动调用，确认创建的对象是什么类型
     * @return
     * @throws Exception
     */
    @Override
    public Class<?> getObjectType() {
       // System.out.println("MyFactoryBean 返回的类型是");
        return AirPlane.class;
    }

    /**
     * 这个方法会自动调用，确认返回的对象是否是单例模式
     * true是
     * false 否
     *
     * @return
     */
    @Override
    public boolean isSingleton() {
        //System.out.println("返回单例模式");
        return true;
    }
}
